package file;


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

/*从文件读取数据 输入
* 数据写入文件 输出
* 硬盘-->cpu 输入
* cpu-->硬盘 输出*/
public class Demo7 {
    public static void main(String[] args) throws IOException {
/*        InputStream inputStream=null;
        //用 try finally 确保inputStream.close()会被执行到 不会因为逻辑上 例如(return throw) 执行不到
        try{
            inputStream=new FileInputStream("./test.txt");
        } finally {
            inputStream.close();
        }*/
        //以下写法更美观 开发中推荐的写法 只要出了try代码块 会自动调用close()
        //InputStream 实现了 Closeable接口的方法 jvm会自动调用
        try(InputStream inputStream=new FileInputStream("./test.txt")/*
        ;InputStream inputStream=new FileInputStream("./test.txt") 可以写多个文件*/){
            //读文件操作
            while(true){
                //一次读一个字节
                /*int data=inputStream.read();
                if(data==-1){
                    break;
                }
                System.out.println(data);*/
                //一次读多个字节 数组长度 自定义
                byte[] data=new byte[3];
                //读操作 尽可能把数组填满 填不满能填多少是多少
                //n 实际读到的字节
                int n=inputStream.read(data);
                if(n==-1){
                    break;
                }
                for (int i = 0; i < n; i++) {
                    System.out.printf("0x%x\n",data[i]);
                }
                System.out.println("==================== ");
            }
        }
    }
}
